//-------------------------------------------------------------------
//	Copyright (c) 2010-2014  Zhirnov Andrey
//	This file is part of the "UX Standard Lib" project.
//	See copyright notice in "UX_STL_Ext.h".
//-------------------------------------------------------------------

#ifndef _UXS_OS_LOW_LEVEL_H
#define _UXS_OS_LOW_LEVEL_H

#pragma once

#include "Base/Common.h"

#ifdef PLATFORM_SDL
#	include "SDL/SyncPrimitives.h"
#	include "SDL/Thread.h"
#	include "SDL/Library.h"
#	include "SDL/Timer.h"
#	include "SDL/FileSystem.h"
#	include "SDL/OSUtils.h"
#	include "SDL/RandDevice.h"
#else

# ifdef PLATFORM_WINDOWS
#	include "Windows/SyncPrimitives.h"
#	include "Windows/Thread.h"
#	include "Windows/Library.h"
#	include "Windows/Timer.h"
#	include "Windows/FileSystem.h"
#	include "Windows/OSUtils.h"
#	include "Windows/RandDevice.h"
# endif

# ifdef PLATFORM_BASE_POSIX
#	include "Posix/SyncPrimitives.h"
#	include "Posix/Thread.h"
#	include "Posix/Library.h"
#	include "Posix/Timer.h"
#	include "Posix/FileSystem.h"
#	include "Posix/OSUtils.h"
#	include "Posix/RandDevice.h"
# endif

# ifdef PLATFORM_ANDROID
#	include "Android/OSAndroid.h"
# endif

#endif


namespace UX_STL
{
namespace UXTypes
{
	typedef _platform_::CurrentThread		CurrentThread;
	typedef _platform_::Thread				Thread;		
	typedef _platform_::SyncEvent			SyncEvent;
	typedef _platform_::CriticalSection		Mutex;
	typedef _platform_::ReadWriteSync		ReadWriteSync;
	typedef _platform_::ConditionVariable	ConditionVariable;
	typedef _platform_::Semaphore			Semaphore;
	typedef _platform_::Library				Library;
	typedef _platform_::PerfTimer			PerfomanceTimer;
	typedef _platform_::Date				Date;
	typedef _platform_::FileSystem			FileSystem;
	typedef _platform_::OSUtils				PlatformUtils;
	typedef _platform_::OSRandomDevice		PlatformRandomDevice;
	
}	// UXTypes
}	// UX_STL

#endif	// _UXS_OS_LOW_LEVEL_H